package basis;

import java.util.Hashtable;

/**
 *  java字符串深入理解
 *
 *  https://blog.csdn.net/ifwinds/article/details/80849184
 *
 *
 *
 *  1、序列化和反序列化的定义：
 *
 *     (1)Java序列化就是指把Java对象转换为字节序列的过程
 *
 *         Java反序列化就是指把字节序列恢复为Java对象的过程。
 *
 *    (2)序列化最重要的作用：在传递和保存对象时.保证对象的完整性和可传递性。
 *    对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
 *
 *   反序列化的最重要的作用：根据字节流中保存的对象状态及描述信息，通过反序列化重建对象。
 *
 *    总结：核心作用就是对象状态的保存和重建。
 *    （整个过程核心点就是字节流中所保存的对象状态及描述信息）
 */


public class StringDemo {
    public static void main(String[] args) {
        StringDemo stringDemo = new StringDemo();
//        stringDemo.test1();
//        stringDemo.test2();
        stringDemo.test4();
    }
    // String的不可变性----放到字符串常量池之后不会发生改变
    public void test1(){
        String s1="abc";
        String s2="abc";
        s1="hello";
        System.out.println(s1==s2);
        System.out.println(s1);
        System.out.println(s2);

    }
    // intern方法
    public void test2(){
        String s1="a";
        String s2 = new String("a");
        System.out.println(s1==s2);
        System.out.println(s1==s2.intern());
        System.out.println("=============");
        String s3 = new String("b");
        String s4 = "b";
        System.out.println(s4==s3.intern());
        System.out.println(s4==s4.intern());

    }

    public void test3(){
        String s1="abc";
        String s2 = new String("abc");
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
    }

    public void   test4(){
        String max="buguanshiheimahaishibaima,zhiyaopaodekuai,doushihaoma,suirankanqilai,"
                + "baimabiheimaruoxiao,danzhenzhengpaoqilaibaimaweibibiheimacha";
        String min = "heima";
        System.out.println(max.indexOf(min));
    }
}
